El Arquitectura de Conjunto de Instrucciones (ISA) actúa como un nivel fundamental de abstracción y un contrato formal entre software y hardware. Mientras que los lenguajes de alto nivel como C ocultan la complejidad, el ISA expone el estado arquitectónico—la configuración precisa de los registros y la memoria del procesador.
1. El Estado Arquitectónico
Una CPU x86-64 define su estado mediante varios componentes clave:
- Contador de Programa (%rip): Almacena la dirección de la siguiente instrucción.
- Archivo de Registros Enteros: 16 registros generales (por ejemplo,
%rax,%rbx) que almacenan valores de 64 bits. - Códigos de Condición: Banderas (ZF, SF, CF, OF) para el flujo de control.
- Registros Vectoriales: Como por ejemplo registros YMM (256 bits) para operaciones SIMD.
2. Abstracción de Memoria
El código máquina ve la memoria como una enorme matriz direccionable por byte. Aunque x86-64 soporta direcciones virtuales de 64 bits, las implementaciones actuales suelen usar un espacio de direcciones de 48 bits ($2^{48}$ bytes). Clasificamos los tamaños de datos como Palabra (16 bits), Doble palabra (32 bits) y Cuádruple palabra (64 bits).
3. Evolución y Compatibilidad
Impulsado por La Ley de Moore, Intel ha evolucionado desde el 8086 hasta Core i7 Haswell. El ISA asegura compatibilidad hacia atrás, permitiendo que el código máquina heredado se ejecute en hardware moderno con múltiples núcleos y hilo hiperparalelo.